'use strict';
const { scanUDPPortInLAN } = require('../handle/lan-udp-scanner');
// 引入日志模块
const { logger } = require('ee-core/log');
// 引入配置模块
const { getConfig } = require('ee-core/config');
// 引入主窗口模块
const { getMainWindow } = require('ee-core/electron');

/**
 * 生命周期管理类
 * 负责处理应用启动、窗口加载等关键生命周期事件
 */
class Lifecycle {

  /**
   * 核心应用加载完成
   */
  async ready() {
    logger.info('[lifecycle] ready');
  }

  /**
   * Electron应用加载完成
   */
  async electronAppReady() {
    logger.info('[lifecycle] electron-app-ready');
     console.log('🚀 Electron 主进程已启动，开始扫描局域网 7678 端口...');
    await scanUDPPortInLAN();
    console.log('🔍 扫描结果 - 发现以下设备开放了 7678 端口:', devices);
  }

  /**
   * 主窗口加载完成
   * 如果配置中设置了延迟显示窗口，则等待窗口准备就绪后再显示
   */
  async windowReady() {
    logger.info('[lifecycle] window-ready');
    // 延迟加载，无白屏
    const { windowsOption } = getConfig();
    if (windowsOption.show == false) {
      const win = getMainWindow();
      win.once('ready-to-show', () => {
        win.show();
        win.focus();
      })
    }
  }

  /**
   * 应用关闭前
   */  
  async beforeClose() {
    logger.info('[lifecycle] before-close');
  }
}
// 自定义类的字符串表示
Lifecycle.toString = () => '[class Lifecycle]';

// 导出生命周期类
module.exports = {
  Lifecycle
};